package br.com.mauricioreis;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import br.com.mauricioreis.db.Consumo;
import br.com.mauricioreis.db.Perfil;
import br.com.mauricioreis.db.Refeicao;
import br.com.mauricioreis.db.Util;

/**
 * Representa a tela de consulta ao consumo diario de nutrientes Há a possibilidade tambem de servir como uma tela de simulação de refeição
 * caso a refeição seja informada
 * 
 * @author mauricio
 * 
 */
public class ConsumoAct extends Activity {
    private Refeicao refeicao;
    private EditText etCarboidratoVd;
    private EditText etCarboidratoConsumo;
    private EditText etCarboidratoSimulacao;
    private EditText etProteinaVd;
    private EditText etProteinaConsumo;
    private EditText etProteinaSimulacao;
    private EditText etGorduraTotalVd;
    private EditText etGorduraTotalConsumo;
    private EditText etGorduraTotalSimulacao;
    private EditText etGorduraSaturadaVd;
    private EditText etGorduraSaturadaConsumo;
    private EditText etGorduraSaturadaSimulacao;
    private EditText etFibraVd;
    private EditText etFibraConsumo;
    private EditText etFibraSimulacao;
    private EditText etSodioVd;
    private EditText etSodioConsumo;
    private EditText etSodioSimulacao;
    private EditText etCalcioVd;
    private EditText etCalcioConsumo;
    private EditText etCalcioSimulacao;
    private EditText etFerroVd;
    private EditText etFerroConsumo;
    private EditText etFerroSimulacao;
    private EditText etVitaminaCVd;
    private EditText etVitaminaCConsumo;
    private EditText etVitaminaCSimulacao;

    private Button btCancelar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // obtem refeicao, se ela foi passada
        Bundle extras = getIntent().getExtras();
        if (extras.getInt("idRefeicao") != 0) {
            // se a refeição foi passada exibe tela de simulação
            setContentView(R.layout.consumo_com_simulacao);
            this.refeicao = new Refeicao();
            this.refeicao.setId(extras.getInt("idRefeicao"));
            this.refeicao = Refeicao.consultar(this, this.refeicao);
            // senão exibe tela de consumo apenas
        } else {
            setContentView(R.layout.consumo);
        }
        atribuiValoresNutrientes();
        montaBotaoCancelar();
    }

    private void atribuiValoresNutrientes() {
        Bundle extras = getIntent().getExtras();
        // obtem data do consumo
        int dia = extras.getInt("dia");
        int mes = extras.getInt("mes");
        int ano = extras.getInt("ano");
        String dataDoConsumo = Util.montaDatayyyyMMdd(ano, mes, dia);
        Consumo consumo = null;
        Consumo consumoSimulado = null;
        if (this.refeicao != null) {
            // Se tem simulação, a coluna consumo exibe o consumo sem a refeição simulada
            consumo = Consumo.consultar(this, dataDoConsumo, refeicao);
            // e a coluna de consumo simulado exibe o consumo incluindo o da refeição simulada
            consumoSimulado = Consumo.consultar(this, dataDoConsumo);

        } else {
            // Se não tem simulação, a coluna de consumo exibe o consumo total
            consumo = Consumo.consultar(this, dataDoConsumo);

        }

        // Obtem os valores diarios
        Perfil perfil = Perfil.obtemUltimoPerfil(this);

        // Atribui os valores a tabela
        etCarboidratoConsumo = (EditText) findViewById(R.id.consumoCarboidratoConsumo);
        etCarboidratoConsumo.setText(Util.formataNutrienteEmGramasParaExibicao(consumo.getCarboidrato()));
        etCarboidratoVd = (EditText) findViewById(R.id.consumoCarboidratoVd);
        etCarboidratoVd.setText(Util.formataNutrienteEmGramasParaExibicao(perfil.getCarboidrato()));

        etProteinaConsumo = (EditText) findViewById(R.id.consumoProteinaConsumo);
        etProteinaConsumo.setText(Util.formataNutrienteEmGramasParaExibicao(consumo.getProteina()));
        etProteinaVd = (EditText) findViewById(R.id.consumoProteinaVd);
        etProteinaVd.setText(Util.formataNutrienteEmGramasParaExibicao(perfil.getProteina()));

        etGorduraTotalConsumo = (EditText) findViewById(R.id.consumoGorduraTotalConsumo);
        etGorduraTotalConsumo.setText(Util.formataNutrienteEmGramasParaExibicao(consumo.getGorduraTotal()));
        etGorduraTotalVd = (EditText) findViewById(R.id.consumoGorduraTotalVd);
        etGorduraTotalVd.setText(Util.formataNutrienteEmGramasParaExibicao(perfil.getGorduraTotal()));

        etGorduraSaturadaConsumo = (EditText) findViewById(R.id.consumoGorduraSaturadaConsumo);
        etGorduraSaturadaConsumo.setText(Util.formataNutrienteEmGramasParaExibicao(consumo.getGorduraSaturada()));
        etGorduraSaturadaVd = (EditText) findViewById(R.id.consumoGorduraSaturadaVd);
        etGorduraSaturadaVd.setText(Util.formataNutrienteEmGramasParaExibicao(perfil.getGorduraSaturada()));

        etFibraConsumo = (EditText) findViewById(R.id.consumoFibraConsumo);
        etFibraConsumo.setText(Util.formataNutrienteEmGramasParaExibicao(consumo.getFibra()));
        etFibraVd = (EditText) findViewById(R.id.consumoFibraVd);
        etFibraVd.setText(Util.formataNutrienteEmGramasParaExibicao(perfil.getFibra()));

        etSodioConsumo = (EditText) findViewById(R.id.consumoSodioConsumo);
        etSodioConsumo.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumo.getSodio()));
        etSodioVd = (EditText) findViewById(R.id.consumoSodioVd);
        etSodioVd.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(perfil.getSodio()));

        etCalcioConsumo = (EditText) findViewById(R.id.consumoCalcioConsumo);
        etCalcioConsumo.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumo.getCalcio()));
        etCalcioVd = (EditText) findViewById(R.id.consumoCalcioVd);
        etCalcioVd.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(perfil.getCalcio()));

        etFerroConsumo = (EditText) findViewById(R.id.consumoFerroConsumo);
        etFerroConsumo.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumo.getFerro()));
        etFerroVd = (EditText) findViewById(R.id.consumoFerroVd);
        etFerroVd.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(perfil.getFerro()));

        etVitaminaCConsumo = (EditText) findViewById(R.id.consumoVitaminaCConsumo);
        etVitaminaCConsumo.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumo.getVitaminaC()));
        etVitaminaCVd = (EditText) findViewById(R.id.consumoVitaminaCVd);
        etVitaminaCVd.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(perfil.getVitaminaC()));
        // se tem consumo simulado, preenche a coluna
        if (consumoSimulado != null) {
            etCarboidratoSimulacao = (EditText) findViewById(R.id.consumoCarboidratoSimulacao);
            etCarboidratoSimulacao.setText(Util.formataNutrienteEmGramasParaExibicao(consumoSimulado.getCarboidrato()));

            etProteinaSimulacao = (EditText) findViewById(R.id.consumoProteinaSimulacao);
            etProteinaSimulacao.setText(Util.formataNutrienteEmGramasParaExibicao(consumoSimulado.getProteina()));

            etGorduraTotalSimulacao = (EditText) findViewById(R.id.consumoGorduraTotalSimulacao);
            etGorduraTotalSimulacao.setText(Util.formataNutrienteEmGramasParaExibicao(consumoSimulado.getGorduraTotal()));

            etGorduraSaturadaSimulacao = (EditText) findViewById(R.id.consumoGorduraSaturadaSimulacao);
            etGorduraSaturadaSimulacao.setText(Util.formataNutrienteEmGramasParaExibicao(consumoSimulado.getGorduraSaturada()));

            etFibraSimulacao = (EditText) findViewById(R.id.consumoFibraSimulacao);
            etFibraSimulacao.setText(Util.formataNutrienteEmGramasParaExibicao(consumoSimulado.getFibra()));

            etSodioSimulacao = (EditText) findViewById(R.id.consumoSodioSimulacao);
            etSodioSimulacao.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumoSimulado.getSodio()));

            etCalcioSimulacao = (EditText) findViewById(R.id.consumoCalcioSimulacao);
            etCalcioSimulacao.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumoSimulado.getCalcio()));

            etFerroSimulacao = (EditText) findViewById(R.id.consumoFerroSimulacao);
            etFerroSimulacao.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumoSimulado.getFerro()));

            etVitaminaCSimulacao = (EditText) findViewById(R.id.consumoVitaminaCSimulacao);
            etVitaminaCSimulacao.setText(Util.formataNutrienteEmMiligramasGramasParaExibicao(consumoSimulado.getVitaminaC()));

        }
    }

    private void montaBotaoCancelar() {
        btCancelar = (Button) findViewById(R.id.consumoVoltar);
        btCancelar.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                finish();
            }
        });
    }

}
